An OpenFlow network is a network control technology that defines, as a “flow,” a series of communications determined by a combination of a Media Access Control (MAC) address, an IP address, and a port number and performs path control for each flow. An OpenFlow network includes a controller for computing the path of a packet (OFC: OpenFlow controller), switches for forwarding a packet (OFS: OpenFlow switches), and terminals connected to the switches.
Each switch includes a flow table in which packet forwarding paths, packet forwarding methods, and the like are described for each flow. The controller sets packet forwarding rules in the entries of the flow tables of the switches. Each switch forwards a packet in accordance with the forwarding rules set in the flow table.
The controller and the switches are connected via the Secure Socket Layer/Transport Layer Security (SSL/TLS), called a secure channel, or Transmission Control Protocol (TCP). OpenFlow protocol messages are transmitted or received via a secure channel.
When a switch receives a packet from a terminal, the switch refers to the header fields (header field attributes) of the flow table and searches for an entry having a header field matching the header information of the packet. If such an entry exists, the switch updates statistical information (“Counters” attribute) of the entry and performs a designated process (“Actions” attribute). If no such entry exists, the switch transmits the packet to the controller (packet-in message).
The controller receives the packet-in message and computes the path of the packet. The controller then adds an entry corresponding to the packet to the flow table of the switch on the basis of the computed path (flow-mod message). The controller then transmits the packet to the switch (packet-out message).
If more terminals are connected to the switches in the OpenFlow network, the switches transmit more packet-in messages to the controller. In this case, the single controller may not be able to process the messages. For this reason, it is preferable to install multiple controllers in the OpenFlow network so that the messages the controller receives from the switches are distributed.
In the installation of multiple controllers in the OpenFlow network, each controller is assigned switches to be controlled by the controller. Accordingly, each controller transmits or receives messages to or from only the switches to be controlled thereby. As a result, it is possible to distribute the messages the controllers receives from the switches.
Assuming that multiple controllers are installed in the OpenFlow network, each controller requires path information and topology information described below when setting forwarding rules in the flow table of each switch. For this reason, the controllers synchronize these sets of information with one another.
(1) Path Information
Path information is information indicating the shortest path in the OpenFlow network. Each controller computes path information from topology information.
(2) Topology Information
Topology information is information on the connection of a switch in the OpenFlow network. Each controller acquires topology information on each of switches controlled by the controller by periodically transmitting query packets of the Link Layer Discovery Protocol (LLDP) or the like to the switches.